<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>

    // arguments是伪数组
    // function fn(){
    //     console.log(arguments)
    //     console.log(arguments[0])
    //     console.log(arguments[1])
    //     console.log(arguments[2])
    //     console.log(arguments.length)
    //     // arguments.push("hello")
    //     console.log(arguments.__proto__ === Array.prototype);
    // }
    // fn(3,4,5,6)

    // 真数组
    // var arr = [5,6,7,8,9];
    // console.log(arr[0])
    // console.log(arr[1])
    // console.log(arr[2])
    // console.log(arr.length)
    // arr.push("hello")
    // console.log(arr);
    // console.log(arr.__proto__ === Array.prototype);


    // 自定义的伪数组
    // var arr = {
    //     0:"hello",
    //     1:5,
    //     2:6,
    //     3:7,
    //     4:"world",
    //     length: 5
    // }
    // console.log(arr);
    // console.log(arr[0]);
    // console.log(arr[1]);
    // console.log(arr[2]);
    // console.log(arr.length);
    // for(var i=0;i<arr.length;i++){
    //     console.log(arr[i]);
    // }
    // // arr.push("abc")
    // console.log(arr.__proto__ === Array.prototype)


    // 伪转真
    var arr = {
        0:"hello",
        1:5,
        2:6,
        3:7,
        4:"world",
        length: 5
    }
    console.log(arr)
    // 遍历伪数组，获取伪数组中所有的数据，逐个放在真数组中
    // var a = [];
    // for(var i=0;i<arr.length;i++){
    //     a.push(arr[i]);
    // }
    // console.log(a)
    // a.push("abc")
    // console.log(a)

    // ========
        
    // 根据可遍历对象创建数组：可以实现伪转真
    // var b = Array.from( arr );
    // console.log(b);
    // b.push("abc")
    // console.log(b);

    // =========

    // 判断是不是数组
    // 区分花括号对象和中括号对象
    // 区分对象和数组
    // console.log( Array.isArray( arr ) );
    // console.log( Array.isArray( [] ) );
    // console.log( Array.isArray( {} ) );
    // console.log( Array.isArray( null ) );

    // ==============

    // 利用原型链指向，区分对象和数组
    // console.log( arr.__proto__ === Array.prototype );
    // console.log( [].__proto__ === Array.prototype );
    // console.log( {}.__proto__ === Array.prototype );

    // ===============

    // 创建数组
    // 用来替补new Array创建数组接收到一个数值型数据时作为长度的问题
    // Array.of接收一个数值数据时，就是作为一个数据存在
    // var c = Array.of("hello", 4,5,6,7,8, "world")
    // console.log(c)
    // console.log(Array.isArray(c))

    // var d = [5];
    // var e = new Array(5);
    // var f = Array.of(5);
    // console.log(d)
    // console.log(e)
    // console.log(f)


    
</script>
</html>